@@ -26,7 +26,7 @@ angular |
||
| 26 | 26 |
controller: 'MainCtrl', |
| 27 | 27 |
controllerAs: 'main' |
| 28 | 28 |
}) |
| 29 |
- .when('/about', {
|
|
| 29 |
+ .when('/player', {
|
|
| 30 | 30 |
templateUrl: 'public/scripts/views/player.html', |
| 31 | 31 |
controller: 'PlayerCtrl', |
| 32 | 32 |
controllerAs: 'player' |
@@ -10,7 +10,7 @@ |
||
| 10 | 10 |
angular.module('infernoQuadrifonicoApp')
|
| 11 | 11 |
.controller('MainCtrl', function ($http, $scope, $interval, $localStorage) {
|
| 12 | 12 |
|
| 13 |
- var useLocalStorage = false; |
|
| 13 |
+ var useLocalStorage = true; |
|
| 14 | 14 |
var socket = io("", { query: "type=controller"});
|
| 15 | 15 |
$scope.playing = []; |
| 16 | 16 |
|
@@ -49,7 +49,7 @@ angular.module('infernoQuadrifonicoApp')
|
||
| 49 | 49 |
$localStorage.roteiro = angular.copy($scope.roteiro); |
| 50 | 50 |
console.log("Autosaving...")
|
| 51 | 51 |
//console.log($localStorage); |
| 52 |
- }, 15000); |
|
| 52 |
+ }, 60000); |
|
| 53 | 53 |
//$interval.cancel(interval); |
| 54 | 54 |
}); |
| 55 | 55 |
|
@@ -113,9 +113,14 @@ angular.module('infernoQuadrifonicoApp')
|
||
| 113 | 113 |
|
| 114 | 114 |
$scope.roteiro[i].arquivos[c].playing = true; |
| 115 | 115 |
var d = $scope.roteiro[i].arquivos[c].duration; |
| 116 |
- var s = $scope.roteiro[i].arquivos[c].seek; |
|
| 116 |
+ var s1 = $scope.roteiro[i].arquivos[c].channels[0].seek; |
|
| 117 |
+ var s2 = $scope.roteiro[i].arquivos[c].channels[1].seek; |
|
| 118 |
+ var volume1 = $scope.roteiro[i].arquivos[c].channels[0].volume |
|
| 119 |
+ var volume2 = $scope.roteiro[i].arquivos[c].channels[1].volume |
|
| 120 |
+ var pan1 = $scope.roteiro[i].arquivos[c].channels[0].pan |
|
| 121 |
+ var pan2 = $scope.roteiro[i].arquivos[c].channels[1].pan |
|
| 117 | 122 |
$scope.roteiro[i].arquivos[c].channels[0].seek; |
| 118 |
- console.log('Playing: ' + $scope.roteiro[i].arquivos[c].id + " | " + Math.floor((d * s)/100));
|
|
| 123 |
+ console.log('Playing: ' + $scope.roteiro[i].arquivos[c].url.split("public/audio/").pop() + " ("+ volume1 + "/" + volume2 + " | " + pan1 + "/" + pan2 + ")");
|
|
| 119 | 124 |
sendPlayCommand($scope.roteiro[i].arquivos[c]); |
| 120 | 125 |
} |
| 121 | 126 |
} |
@@ -131,7 +136,7 @@ angular.module('infernoQuadrifonicoApp')
|
||
| 131 | 136 |
$scope.roteiro[i].arquivos[c].playing = false; |
| 132 | 137 |
//$scope.roteiro[i].arquivos[c].seek = 0; |
| 133 | 138 |
sendStopCommand($scope.roteiro[i].arquivos[c]) |
| 134 |
- console.log('Finished: ' + $scope.roteiro[i].arquivos[c].id + " | " + $scope.roteiro[i].arquivos[c].playing);
|
|
| 139 |
+ console.log('Finished: ' + $scope.roteiro[i].arquivos[c].url + " | " + $scope.roteiro[i].arquivos[c].playing);
|
|
| 135 | 140 |
} |
| 136 | 141 |
} |
| 137 | 142 |
} |
@@ -267,6 +272,8 @@ angular.module('infernoQuadrifonicoApp')
|
||
| 267 | 272 |
} |
| 268 | 273 |
delete arquivo.channels[0].pan; |
| 269 | 274 |
delete arquivo.channels[0].seek; |
| 275 |
+ delete arquivo.channels[1].pan; |
|
| 276 |
+ delete arquivo.channels[1].seek; |
|
| 270 | 277 |
socket.emit('update playback', arquivo);
|
| 271 | 278 |
} |
| 272 | 279 |
} |
@@ -284,6 +291,8 @@ angular.module('infernoQuadrifonicoApp')
|
||
| 284 | 291 |
} |
| 285 | 292 |
delete arquivo.channels[0].volume; |
| 286 | 293 |
delete arquivo.channels[0].seek; |
| 294 |
+ delete arquivo.channels[1].volume; |
|
| 295 |
+ delete arquivo.channels[1].seek; |
|
| 287 | 296 |
socket.emit('update playback', arquivo);
|
| 288 | 297 |
} |
| 289 | 298 |
} |
@@ -10,6 +10,20 @@ |
||
| 10 | 10 |
angular.module('infernoQuadrifonicoApp')
|
| 11 | 11 |
.controller('PlayerCtrl', function ($http, $scope, $interval, $localStorage) {
|
| 12 | 12 |
|
| 13 |
+ var channel = 0; |
|
| 14 |
+ $scope.current_channel = 1; |
|
| 15 |
+ |
|
| 16 |
+ $scope.changeChannel = function() {
|
|
| 17 |
+ if(channel == 0){
|
|
| 18 |
+ channel = 1; |
|
| 19 |
+ $scope.current_channel = 2; |
|
| 20 |
+ } else {
|
|
| 21 |
+ channel = 0; |
|
| 22 |
+ $scope.current_channel = 1; |
|
| 23 |
+ } |
|
| 24 |
+ console.log("changing to channel " + channel);
|
|
| 25 |
+ } |
|
| 26 |
+ |
|
| 13 | 27 |
var socket = io(); |
| 14 | 28 |
socket.on('play', function(arquivo){
|
| 15 | 29 |
console.log("Playing file: " + arquivo.url)
|
@@ -52,14 +66,14 @@ angular.module('infernoQuadrifonicoApp')
|
||
| 52 | 66 |
src: [$scope.roteiro[i].arquivos[c].url], |
| 53 | 67 |
autoplay: false, |
| 54 | 68 |
loop: $scope.roteiro[i].arquivos[c].loop, |
| 55 |
- volume: ($scope.roteiro[i].arquivos[c].channels[0].volume/100), |
|
| 56 |
- stereo: $scope.roteiro[i].arquivos[c].channels[0].pan, |
|
| 69 |
+ volume: ($scope.roteiro[i].arquivos[c].channels[channel].volume/100), |
|
| 70 |
+ stereo: $scope.roteiro[i].arquivos[c].channels[channel].pan, |
|
| 57 | 71 |
onend: function(id) {
|
| 58 | 72 |
for (var i = 0; i < $scope.roteiro.length; i++) {
|
| 59 | 73 |
for (var c = 0; c < $scope.roteiro[i].arquivos.length; c++) {
|
| 60 | 74 |
if($scope.roteiro[i].arquivos[c].id == id){
|
| 61 | 75 |
$scope.roteiro[i].arquivos[c].playing = false; |
| 62 |
- $scope.roteiro[i].arquivos[c].channels[0].seek = 0; |
|
| 76 |
+ $scope.roteiro[i].arquivos[c].channels[channel].seek = 0; |
|
| 63 | 77 |
console.log('Finished: ' + id + " | playing: " + $scope.roteiro[i].arquivos[c].playing);
|
| 64 | 78 |
$scope.$apply(); |
| 65 | 79 |
delete $scope.roteiro[i].arquivos[c].sound; |
@@ -79,13 +93,17 @@ angular.module('infernoQuadrifonicoApp')
|
||
| 79 | 93 |
for (var i = 0; i < $scope.roteiro.length; i++) {
|
| 80 | 94 |
for (var c = 0; c < $scope.roteiro[i].arquivos.length; c++) {
|
| 81 | 95 |
if($scope.roteiro[i].arquivos[c].url == arquivo.url){
|
| 82 |
- $scope.roteiro[i].arquivos[c].volume = parseInt(arquivo.channels[0].volume); |
|
| 83 |
- $scope.roteiro[i].arquivos[c].pan = parseInt(arquivo.channels[0].pan); |
|
| 84 |
- $scope.roteiro[i].arquivos[c].seek = parseInt(arquivo.channels[0].seek); |
|
| 96 |
+ //$scope.roteiro[i].arquivos[c].volume = arquivo.channels[channel].volume; |
|
| 97 |
+ //$scope.roteiro[i].arquivos[c].pan = arquivo.channels[channel].pan; |
|
| 98 |
+ //$scope.roteiro[i].arquivos[c].seek = arquivo.channels[channel].seek; |
|
| 99 |
+ $scope.roteiro[i].arquivos[c].channels = arquivo.channels; |
|
| 85 | 100 |
console.log($scope.roteiro[i].arquivos[c]) |
| 101 |
+ var channels = $scope.roteiro[i].arquivos[c].channels; |
|
| 102 |
+ console.log("received: " + $scope.roteiro[i].arquivos[c].url.split("public/audio/").pop() + " (" + channels[0].volume + "/" + channels[1].volume + " | " + channels[0].pan + "/" + channels[1].pan + ")")
|
|
| 103 |
+ console.log("playing: " + $scope.roteiro[i].arquivos[c].url.split("public/audio/").pop() + " (" + channels[channel].volume + " | " + channels[channel].pan + ")")
|
|
| 86 | 104 |
if($scope.roteiro[i].arquivos[c].sound) {
|
| 87 |
- $scope.roteiro[i].arquivos[c].sound.volume($scope.roteiro[i].arquivos[c].channels[0].volume/100); |
|
| 88 |
- $scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].channels[0].pan/100); |
|
| 105 |
+ $scope.roteiro[i].arquivos[c].sound.volume($scope.roteiro[i].arquivos[c].channels[channel].volume/100); |
|
| 106 |
+ $scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].channels[channel].pan/100); |
|
| 89 | 107 |
$scope.roteiro[i].arquivos[c].sound.stop(); |
| 90 | 108 |
$scope.roteiro[i].arquivos[c].sound.play(); |
| 91 | 109 |
} else {
|
@@ -95,15 +113,15 @@ angular.module('infernoQuadrifonicoApp')
|
||
| 95 | 113 |
src: [$scope.roteiro[i].arquivos[c].url], |
| 96 | 114 |
autoplay: false, |
| 97 | 115 |
loop: $scope.roteiro[i].arquivos[c].loop, |
| 98 |
- volume: ($scope.roteiro[i].arquivos[c].channels[0].volume/100), |
|
| 99 |
- stereo: $scope.roteiro[i].arquivos[c].channels[0].pan, |
|
| 116 |
+ volume: ($scope.roteiro[i].arquivos[c].channels[channel].volume/100), |
|
| 117 |
+ stereo: $scope.roteiro[i].arquivos[c].channels[channel].pan, |
|
| 100 | 118 |
onend: function(id) {
|
| 101 | 119 |
for (var i = 0; i < $scope.roteiro.length; i++) {
|
| 102 | 120 |
for (var c = 0; c < $scope.roteiro[i].arquivos.length; c++) {
|
| 103 | 121 |
if($scope.roteiro[i].arquivos[c].id == id){
|
| 104 | 122 |
$scope.roteiro[i].arquivos[c].playing = false; |
| 105 | 123 |
$scope.roteiro[i].arquivos[c].seek = 0; |
| 106 |
- console.log('Finished: ' + id + " | playing: " + $scope.roteiro[i].arquivos[c].playing);
|
|
| 124 |
+ console.log('finished: ' + $scope.roteiro[i].arquivos[c].url.split("public/audio/").pop());
|
|
| 107 | 125 |
$scope.$apply(); |
| 108 | 126 |
delete $scope.roteiro[i].arquivos[c].sound; |
| 109 | 127 |
socket.emit('play ended', $scope.roteiro[i].arquivos[c]);
|
@@ -119,9 +137,9 @@ angular.module('infernoQuadrifonicoApp')
|
||
| 119 | 137 |
$scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].pan); |
| 120 | 138 |
$scope.roteiro[i].arquivos[c].playing = true; |
| 121 | 139 |
var d = $scope.roteiro[i].arquivos[c].sound.duration(); |
| 122 |
- var s = $scope.roteiro[i].arquivos[c].channels[0].seek; |
|
| 140 |
+ var s = $scope.roteiro[i].arquivos[c].channels[channel].seek; |
|
| 123 | 141 |
$scope.roteiro[i].arquivos[c].sound.seek((d * s)/100) |
| 124 |
- console.log('Playing: ' + $scope.roteiro[i].arquivos[c].id + " | pan: " + $scope.roteiro[i].arquivos[c].channels[0].pan + " | volume: " + $scope.roteiro[i].arquivos[c].channels[0].volume);
|
|
| 142 |
+ //console.log('Playing: ' + $scope.roteiro[i].arquivos[c].id + " | pan: " + $scope.roteiro[i].arquivos[c].channels[channel].pan + " | volume: " + $scope.roteiro[i].arquivos[c].channels[channel].volume);
|
|
| 125 | 143 |
} |
| 126 | 144 |
} |
| 127 | 145 |
} |
@@ -134,7 +152,7 @@ angular.module('infernoQuadrifonicoApp')
|
||
| 134 | 152 |
$scope.roteiro[i].arquivos[c].sound.stop(); |
| 135 | 153 |
delete $scope.roteiro[i].arquivos[c].sound; |
| 136 | 154 |
$scope.roteiro[i].arquivos[c].playing = false; |
| 137 |
- $scope.roteiro[i].arquivos[c].channels[0].seek = 0; |
|
| 155 |
+ $scope.roteiro[i].arquivos[c].channels[channel].seek = 0; |
|
| 138 | 156 |
console.log('Finished: ' + $scope.roteiro[i].arquivos[c].id + " | playing: " + $scope.roteiro[i].arquivos[c].playing);
|
| 139 | 157 |
} |
| 140 | 158 |
} |
@@ -145,23 +163,23 @@ angular.module('infernoQuadrifonicoApp')
|
||
| 145 | 163 |
for (var i = 0; i < $scope.roteiro.length; i++) {
|
| 146 | 164 |
for (var c = 0; c < $scope.roteiro[i].arquivos.length; c++) {
|
| 147 | 165 |
if($scope.roteiro[i].arquivos[c].url == arquivo.url){
|
| 148 |
- if(arquivo.channels[0].seek){
|
|
| 149 |
- $scope.roteiro[i].arquivos[c].channels[0].seek = arquivo.channels[0].seek; |
|
| 166 |
+ if(arquivo.channels[channel].seek){
|
|
| 167 |
+ $scope.roteiro[i].arquivos[c].channels[channel].seek = arquivo.channels[channel].seek; |
|
| 150 | 168 |
var d = $scope.roteiro[i].arquivos[c].sound.duration(); |
| 151 |
- var s = $scope.roteiro[i].arquivos[c].channels[0].seek; |
|
| 169 |
+ var s = $scope.roteiro[i].arquivos[c].channels[channel].seek; |
|
| 152 | 170 |
var v = $scope.roteiro[i].arquivos[c].sound.seek(); |
| 153 | 171 |
$scope.roteiro[i].arquivos[c].sound.seek(s) |
| 154 | 172 |
console.log("seek: " + s);
|
| 155 | 173 |
} |
| 156 |
- if(arquivo.channels[0].volume){
|
|
| 157 |
- $scope.roteiro[i].arquivos[c].channels[0].volume = arquivo.channels[0].volume; |
|
| 158 |
- $scope.roteiro[i].arquivos[c].sound.volume($scope.roteiro[i].arquivos[c].channels[0].volume/100); |
|
| 159 |
- console.log("volume: " + $scope.roteiro[i].arquivos[c].sound.volume() + " | " + $scope.roteiro[i].arquivos[c].channels[0].volume);
|
|
| 174 |
+ if(arquivo.channels[channel].volume){
|
|
| 175 |
+ $scope.roteiro[i].arquivos[c].channels[channel].volume = arquivo.channels[channel].volume; |
|
| 176 |
+ $scope.roteiro[i].arquivos[c].sound.volume($scope.roteiro[i].arquivos[c].channels[channel].volume/100); |
|
| 177 |
+ console.log("volume: " + $scope.roteiro[i].arquivos[c].sound.volume() + " | " + $scope.roteiro[i].arquivos[c].channels[channel].volume);
|
|
| 160 | 178 |
} |
| 161 | 179 |
if(arquivo.channels[0].pan){
|
| 162 |
- $scope.roteiro[i].arquivos[c].channels[0].pan = arquivo.channels[0].pan; |
|
| 163 |
- $scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].channels[0].pan/100); |
|
| 164 |
- console.log("pan: " + $scope.roteiro[i].arquivos[c].sound.stereo() + " | " + $scope.roteiro[i].arquivos[c].channels[0].pan);
|
|
| 180 |
+ $scope.roteiro[i].arquivos[c].channels[channel].pan = arquivo.channels[channel].pan; |
|
| 181 |
+ $scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].channels[channel].pan/100); |
|
| 182 |
+ console.log("pan: " + $scope.roteiro[i].arquivos[c].sound.stereo() + " | " + $scope.roteiro[i].arquivos[c].channels[channel].pan);
|
|
| 165 | 183 |
} |
| 166 | 184 |
break; |
| 167 | 185 |
} |
@@ -1,3 +1,4 @@ |
||
| 1 | 1 |
<div style="margin-top: 150px; margin-left: auto; margin-right: auto; width: 400px; text-align: center;"> |
| 2 | 2 |
<h2>Network Audio Player</h2> |
| 3 |
+ <a ng-click="changeChannel()">Channel {{current_channel}}</a>
|
|
| 3 | 4 |
</div> |
@@ -26,7 +26,7 @@ io.on('connection', function(socket){
|
||
| 26 | 26 |
|
| 27 | 27 |
socket.on('play', function(file){
|
| 28 | 28 |
io.emit('play', file);
|
| 29 |
- console.log('playing file: ' + file.url + " | volume: " + file.channels[0].volume + " | pan: " + file.channels[0].pan );
|
|
| 29 |
+ console.log('playing: ' + file.url.split("public/audio/").pop() + " (" + file.channels[0].volume + "/" + file.channels[1].volume + " | " + file.channels[0].pan + "/" + file.channels[1].pan + ")" );
|
|
| 30 | 30 |
}); |
| 31 | 31 |
|
| 32 | 32 |
socket.on('stop', function(file){
|